The present invention relates generally to networked multi-media systems. More particularly, the invention relates to an inexpensive, scalable, open-architecture multi-media server that can be used to store and retrieve data with either real-time or high volume requirements.
With the continued increase in the power of computers, there is a growing interest in low-cost networks capable of delivering multi-media selections, such as video and audio material. Hotel and airline entertainment systems, news editing, video on demand, and interactive television are among the more promising applications.
There are different types of data which can be distributed over a network. Streaming data types such as audio and video data have strict deadline requirements. Static data types, such as images and video objects, require large volumes of storage space. Networks that require the delivery of streaming data as well as static data place severe constraints on the media servers that are capable of meeting the requirements of both types of data objects. One method of meeting the requirements of both types of data objects has been to use powerful computers for the multi-media server. Examples of these types of computers are multi-processors, mini-computers, or high end work stations with enough storage and bandwidth to be able to serve the targeted number of clients. Typically these servers are extremely expensive and they are not scalable. The present invention solves this problem by employing distributed architecture server built on PC's using low cost off the shelf hardware components although other low cost computers could also be used. The server can initially be designed with a limited number of disks, network bandwidth, and memory cache. Then as the demand grows for more video data and video objects the capability of the server can be increased by adding more low cost hardware components such as disks, network interface cards, and memory cache.
The server file system combines a number of unique capabilities to enhance fault tolerance, usage of network bandwidth, and usage of storage space at the hardware level. Fault tolerance at the hardware level can be enhanced by using redundant storage devices so that data is not lost in case a disk crashes. At the software level, fault tolerance is improved by a local cache buffer for the storage devices to provide short-term streaming storage of data to enable faultless recovery from a disk crash. Fault tolerance is also improved by separating the control path from the data path at the data link layers. By separating the control and data paths it is possible to apply a higher quality of service to the control path than to the data path, resulting in more reliable operation. The data path implements a soft real time guarantee in which the server provides best efforts to service data requests from clients. The server includes a hierarchal file system that has the capability of handling different size data blocks resulting in improved utilization of the available storage space. Empty data blocks within the file system are merged together forming larger blocks to reduce fragmentation of the storage system. To enhance usage of network bandwidth and improve disk utilization data blocks can be striped over an array of disks.
For a more complete understanding of the invention, its objects and advantages, reference may be had to the following specification and to the accompanying drawings.